//
// Created by ds on 24-7-2.
//

#ifndef SIMULATIONSYNCHRONIZATION_H
#define SIMULATIONSYNCHRONIZATION_H

#include "CarlaSimulation.h"
#include "SumoSimulation.h"

class SimulationSynchronization {
    CarlaSimulation *carlaSimulation;
    SumoSimulation *sumoSimulation;

    map<string, ActorId> sumoToCarlaActorMap;

public:
    SimulationSynchronization(CarlaSimulation *carlaSimulation,
                              SumoSimulation *sumoSimulation);

    ~SimulationSynchronization();

    void tick();

    /**
     * 根据sumo的新加入车辆在carla中生成对应的车辆
     */
    void spawnActorFromSumo();

    /**
     * 根据sumo当前车辆状态信息更新carla中的车辆状态信息
     */
    void updateActorFromSumo();

    /**
     * 根据sumo的离开的车辆在carla中销毁对应的车辆
     */
    void destroyActorFromSumo();
};


#endif //SIMULATIONSYNCHRONIZATION_H
